//package com.starblink.home.ui.adapter
//
//import android.content.Context
//import android.view.MotionEvent
//import android.view.View
//import android.view.ViewConfiguration
//import androidx.recyclerview.widget.RecyclerView
//import com.starblink.home.R
//import com.zhpan.bannerview.BannerViewPager
//import kotlin.math.abs
//
//class VerticalScrollBannerTouchListener(val context: Context) : RecyclerView.OnItemTouchListener {
//
//    var targetView: BannerViewPager<*>? = null
//    var vRoot: View? = null
//    val mTouchSlop = ViewConfiguration.get(context).scaledTouchSlop / 3
//    var enable = false
//    var startX = 0f
//    var startY = 0f
//    var processTime = 0L
//
//    override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
//        if (e.action != MotionEvent.ACTION_DOWN) return false
//        val view = rv.findChildViewUnder(e.x, e.y)
//        if (view?.tag == "disable_vertical_scroll") {
//            vRoot = view
//            targetView = view.findViewById<BannerViewPager<*>>(R.id.banner)
//            targetView?.requestDisallowInterceptTouchEvent(true)
//            enable = true
//            return true
//        }
//        enable = false
//        targetView = null
//        return false
//    }
//
//    override fun onTouchEvent(rv: RecyclerView, e: MotionEvent) {
//        targetView?.dispatchTouchEvent(e)//不能删
//        when (e.action) {
//            MotionEvent.ACTION_DOWN -> {
//                startX = e.x
//                startY = e.y
//            }
//            MotionEvent.ACTION_MOVE -> {
//                process(rv, e)
//            }
//            MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
//                process(rv, e)
//                startX = 0f
//                startY = 0f
//                if (enable) {
//                    val ec = MotionEvent.obtain(e)
//                    val xx = (rv.scaleX + (vRoot?.left ?: 0) + (targetView?.left ?: 0))
//                    val xy = (rv.scaleY + (vRoot?.top ?: 0) + (targetView?.top ?: 0))
//                    ec.offsetLocation(-xx, -xy)
//                    ec.action = MotionEvent.ACTION_DOWN
//                    targetView?.dispatchTouchEvent(ec)
//                    ec.action = MotionEvent.ACTION_UP
//                    targetView?.dispatchTouchEvent(ec)
//                    ec.recycle()
//                }
//                enable = false
//                targetView = null
//            }
//        }
//    }
//
//    override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {
//    }
//
//    fun process(rv: RecyclerView, e: MotionEvent) {
//        if (!enable) return
//        val endX = e.x
//        val endY = e.y
//        var dy = startY - endY
//        val disX = abs(endX - startX)
//        val disY = abs(endY - startY)
//        if (disY > disX) {
//            dy = if (dy > 0) {
//                0f.coerceAtLeast(dy - mTouchSlop)
//            } else {
//                0f.coerceAtMost(dy + mTouchSlop)
//            }
//            if (dy != 0f) {
//                val size = targetView?.data?.size ?: 1
//                val now = System.currentTimeMillis()
//                if (size > 1 && now - processTime > 600) {
//                    val p = targetView?.currentItem ?: 0
//                    if (dy > 0) {
//                        if (p + 1 >= size) {
//                            targetView?.currentItem = 0
//                        } else {
//                            targetView?.currentItem = p + 1
//                        }
//                    } else {
//                        if (p - 1 < 0) {
//                            targetView?.currentItem = size - 1
//                        } else {
//                            targetView?.currentItem = p - 1
//                        }
//                    }
//                    processTime = System.currentTimeMillis()
//                }
//                enable = false
//            }
//        }
//    }
//}
